package com.chinathinks.core.net.nntp;

/***
 * NewsgroupInfo stores information pertaining to a newsgroup returned by the
 * NNTP GROUP, LIST, and NEWGROUPS commands, implemented by
 * {@link org.apache.commons.net.nntp.NNTPClient#selectNewsgroup selectNewsgroup
 * } , {@link org.apache.commons.net.nntp.NNTPClient#listNewsgroups
 * listNewsgroups } , and
 * {@link org.apache.commons.net.nntp.NNTPClient#listNewNewsgroups
 * listNewNewsgroups } respectively.
 * <p>
 * <p>
 * 
 * @author Daniel F. Savarese
 * @see NNTPClient
 ***/

public final class NewsgroupInfo {
	/***
	 * A constant indicating that the posting permission of a newsgroup is
	 * unknown. For example, the NNTP GROUP command does not return posting
	 * information, so NewsgroupInfo instances obtained from that command
	 * willhave an UNKNOWN_POSTING_PERMISSION.
	 ***/
	public static final int UNKNOWN_POSTING_PERMISSION = 0;

	/*** A constant indicating that a newsgroup is moderated. ***/
	public static final int MODERATED_POSTING_PERMISSION = 1;

	/*** A constant indicating that a newsgroup is public and unmoderated. ***/
	public static final int PERMITTED_POSTING_PERMISSION = 2;

	/***
	 * A constant indicating that a newsgroup is closed for general posting.
	 ***/
	public static final int PROHIBITED_POSTING_PERMISSION = 3;

	private String __newsgroup;
	private int __estimatedArticleCount;
	private int __firstArticle, __lastArticle;
	private int __postingPermission;

	void _setNewsgroup(String newsgroup) {
		__newsgroup = newsgroup;
	}

	void _setArticleCount(int count) {
		__estimatedArticleCount = count;
	}

	void _setFirstArticle(int first) {
		__firstArticle = first;
	}

	void _setLastArticle(int last) {
		__lastArticle = last;
	}

	void _setPostingPermission(int permission) {
		__postingPermission = permission;
	}

	/***
	 * Get the newsgroup name.
	 * <p>
	 * 
	 * @return The name of the newsgroup.
	 ***/
	public String getNewsgroup() {
		return __newsgroup;
	}

	/***
	 * Get the estimated number of articles in the newsgroup. The accuracy of
	 * this value will depend on the server implementation.
	 * <p>
	 * 
	 * @return The estimated number of articles in the newsgroup.
	 ***/
	public int getArticleCount() {
		return __estimatedArticleCount;
	}

	/***
	 * Get the number of the first article in the newsgroup.
	 * <p>
	 * 
	 * @return The number of the first article in the newsgroup.
	 ***/
	public int getFirstArticle() {
		return __firstArticle;
	}

	/***
	 * Get the number of the last article in the newsgroup.
	 * <p>
	 * 
	 * @return The number of the last article in the newsgroup.
	 ***/
	public int getLastArticle() {
		return __lastArticle;
	}

	/***
	 * Get the posting permission of the newsgroup. This will be one of the
	 * <code> POSTING_PERMISSION </code> constants.
	 * <p>
	 * 
	 * @return The posting permission status of the newsgroup.
	 ***/
	public int getPostingPermission() {
		return __postingPermission;
	}

	/*
	 * public String toString() { StringBuffer buffer = new StringBuffer();
	 * buffer.append(__newsgroup); buffer.append(' ');
	 * buffer.append(__lastArticle); buffer.append(' ');
	 * buffer.append(__firstArticle); buffer.append(' ');
	 * switch(__postingPermission) { case 1: buffer.append('m'); break; case 2:
	 * buffer.append('y'); break; case 3: buffer.append('n'); break; } return
	 * buffer.toString(); }
	 */
}
